package dao
import "go_gin_bubble/models"

//负责todo对象的crud

//插入
func AddOneTodo(todo *models.Todo) (affectRows int,err error) {
	res  := DB.Create(&todo)
	return int(res.RowsAffected), res.Error
}

//删除
func DeleteOneTodo(id string)(int,error) {
	res := DB.Delete(&models.Todo{}, id)
	return int(res.RowsAffected),res.Error
}

//查询
func QueryAllItems()(todoList []*models.Todo,rows int,err error){
	//select * from todo where id=todo.ID
	res := DB.Find(&todoList)
	rows = int(res.RowsAffected)
	err = res.Error
	return 
}
func QueryOneItem(id string)(todo *models.Todo,rows int,err error){
	todo = new(models.Todo)
	//select * from todo order by id limit 1;
	res := DB.Where("id=?",id).First(&todo)
	// res1 := DB.First(&todo, todo.ID)
	return todo,int(res.RowsAffected),res.Error
}
//自定义查询参数 raw sql
func QueryByStr(s string, todoList []*models.Todo) error { 
	//自己定制查询命令
	res := DB.Raw(s).Find(&todoList)
	return res.Error
}


//更新
func UpdateOneTodo(todo *models.Todo) (int,error) {
	//更新所有字段
	//update todo set ..... where id=todo.ID
	res := DB.Save(&todo)
	return int(res.RowsAffected),res.Error
}

